草庐IT

GCD ③ dispatch_barrier

全部标签

ios - GCD 异步 block & EXC_BAD_ACCESS

这种崩溃相当罕见,但它发生的次数足以让我确信我做错了。这是在自定义并发队列上使用主线程异步分派(dispatch)和屏障分派(dispatch)执行的API调用(使用屏障是因为我们正在通过对同一队列的非屏障调用修改在别处读取的数据)。目标是异步发出HTTP请求,然后触发dispatch_barrier_async来处理结果数据。当dispatch_barrier_async调用正在复制传递的block中使用的变量时,就会发生崩溃。我想该变量在block中使用之前已被释放,但考虑到我声明它的方式(作为__block变量),我看不出这是怎么发生的(除非问题出在赋值运算符...)。这是堆栈跟

iOS TableView 滞后问题,我正在使用分派(dispatch)和保存缓存

-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{TableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:@"TableViewCell"forIndexPath:indexPath];cell.tag=indexPath.row;//cell.imageView.image=nil;//RoundedRectforcellimageCALayer*cellImageLay

iphone - 使用图层和 Grand Central Dispatch 渲染 UIButtons 的最快方法?

我有一个包含30个UIButton的网格,甚至可能更多,它们被子类化以使用层进行渲染:一个基本CALayer、一个CAShapeLayer、一个CAGradientLayer和一个CATextLayer。我试图在加载相应的xib文件时尽量减少渲染/显示按钮所需的总时间。如果我在viewDidLoad中简单地依次设置每个按钮,View出现所需的时间大约为5-6秒,这显然太多了。为了加快按钮设置速度,我按如下方式使用GrandCentralDispatch。在viewDidLoad中,我在全局队列上使用dispatch_async设置每个按钮层(将形状层和渐变层添加到基础层),以便按钮可以

iphone - 返回在 GCD block 中设置的值

我有一个从block中检索的值,我想在下面的方法中返回该值。由于该block似乎是异步的,我该如何实现?-(UIImage*)imageAtIndex:(NSUInteger)index{UIImage*image;[self.albumenumerateAssetsAtIndexes:[NSIndexSetindexSetWithIndex:index]options:0usingBlock:^(ALAsset*result,NSUIntegerindex,BOOL*stop){//setimageinhere}];returnimage;} 最佳答案

ios - 图像持久化和延迟加载与 Dispatch_Async 冲突

我正在开发一个提要阅读器,我是通过使用nsxmlparser解析rss提要来实现的。我还有从CDATAblock中获取的缩略图对象。-(void)parser:(NSXMLParser*)parserfoundCDATA:(NSData*)CDATABlock{dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{NSString*someString=[[NSStringalloc]initWithData:CDATABlockencoding:NSUTF8StringEncodin

iphone - 如何获取GCD队列中的任务列表?

我在GCD中得到如下所示的主队列,并在我的应用程序中添加来自不同类的不同任务。dispatch_queue_tqueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);现在我想知道有多少任务仍在GCD主队列中。有什么方法可以获取GCD队列中的任务列表吗?谢谢 最佳答案 这确实不是GCD的范例。例如,如果您想跟踪一组特定的操作,您可以创建一个调度组并注册以在完成时收到通知,如本例所示。dispatch_group_ttaskGroup=dispatch_gro

ios - GCD队列是否有队列字典

我非常喜欢NSThread中的threadDictionary属性:非常方便地存储具有每个线程所有权的东西。是否有GCD队列的等效字典? 最佳答案 如果您可以针对iOS5及更高版本,则可以使用dispatch_queue_get[set]_specific(),它允许您将字典样式(即键控)值添加到队列中。我在它们上面找不到文档页面,很奇怪,但是它们在queue.h中有注释 关于ios-GCD队列是否有队列字典,我们在StackOverflow上找到一个类似的问题:

ios - 为什么使用 dispatch_async 比完全不使用它要慢?

我想知道为什么我的代码在使用dispatch_async时比完全不使用它时运行得慢得多。我试图通过屏蔽它并使用UIGraphicsImageRenderer来模糊我的UIImage的边缘(不确定它是否是最有效的方法..)但是当我不使用dispatch_async时,它运行得更快。这是为什么?这是我的代码和我从代码中得到的结果。非常感谢任何帮助。self.view.backgroundColor=[UIColorwhiteColor];dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^

ios - 强引用dispatch_queue的retain cycle

在一个类中,我声明了一个线程:@property(nonatomic,strong)dispatch_queue_tdatabaseQueue;然后我执行这个线程的操作dispatch_async(self.databaseQueue,^{[self.daodeleteRetries];});这可能会产生一个保留周期吗?和当前类持有对viewControllerToDismiss的强引用,并且有一段代码如下所示:[viewControllerToDismissdismissViewControllerAnimated:shouldAnimateDismisscompletion:^{[

ios - 父类(super class)中的 dispatch_once?

如果我在父类(superclass)的实例方法中调用dispatch_once,它会为每个子类执行一次吗?我猜不是因为XcodeGrandCentralDispatch(GCD)Reference说它“在应用程序的生命周期内只执行一次block对象。” 最佳答案 您对文档的阅读是正确的。如果您使用相同的一次token,该block将只执行一次。 关于ios-父类(superclass)中的dispatch_once?,我们在StackOverflow上找到一个类似的问题: